home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
mint
/
editors
/
mjovesrc.zoo
/
jove.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-10-02
|
6KB
|
224 lines
/***************************************************************************
* This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne. JOVE *
* is provided to you without charge, and with no warranty. You may give *
* away copies of JOVE, including sources, provided that this notice is *
* included in all the files. *
***************************************************************************/
/* jove.h header file to be included by EVERYONE */
#include <setjmp.h>
#ifndef TUNED
# include "tune.h"
#endif
#ifndef MAC
# include <types.h>
# include <string.h>
#else
# include <types.h>
#endif
/* proto: macro to allow us to prototype any function declaration
* without upsetting old compilers.
*/
#ifdef REALSTDC
# define USE_PROTOTYPES 1
#endif
#ifdef USE_PROTOTYPES
# define proto(x) x
# ifdef NO_PTRPROTO
/* on these systems, a prototype cannot be used for a pointer to function */
# define ptrproto(x) ()
# else
# define ptrproto(x) x
# endif
#else
# define proto(x) ()
# define ptrproto(x) ()
#endif
/* There are two ways to handle functions with a variable number of args.
* The old portable way uses varargs.h. The way sanctioned by ANSI X3J11
* uses stdarg.h.
*/
#ifdef REALSTDC
#define STDARGS 1
# define va_init(ap, parmN) { va_start((ap), (parmN)); }
#else
# define va_init(ap, parmN) { va_start((ap)); }
#endif
/* ANSI Goodies and their substitutes
*
* const: readonly type qualifier
*
* volatile: type qualifier indicating one of two kinds of magic.
* 1. This object may be modified by an event unknown to the implementation
* (eg. asynchronous signal or memory-mapped I/O device).
* 2. This automatic variable might be modified between a setjmp()
* and a longjmp(), and we wish it to have the correct value after
* the longjmp(). This second meaning is an X3J11 abomination.
* So far, only the second meaning is used.
*
* UnivPtr: universal pointer type
*
* UnivConstPtr: universal pointer to const
*/
#ifdef REALSTDC
typedef void *UnivPtr;
typedef const void *UnivConstPtr;
#else /* !REALSTDC */
# ifndef const
# define const /* Only in ANSI C. Pity */
# endif
# ifndef volatile
# define volatile
# endif
typedef char *UnivPtr;
typedef const char *UnivConstPtr;
#endif /* !REALSTDC */
/* According to the ANSI standard for C, any library routine may
* be defined as a macro with parameters. In order to prevent
* the expansion of this macro in a declaration of the routine,
* ANSI suggests parenthesizing the identifier. This is a reasonable
* and legal approach, even for K&R C.
*
* A bug in the MIPS compiler used on MIPS, IRIS, and probably other
* MIPS R[23]000 based systems, causes the compiler to reject
* these declarations (at least at the current time, 1989 August).
* To avoid this bug, we conditionally define and use UNMACRO.
*/
#ifdef mips
# define UNMACRO(proc) proc
#else
# define UNMACRO(proc) (proc)
#endif
/* Since we don't use stdio.h, we may have to define NULL and EOF */
#ifndef NULL
# define NULL 0
#endif
#ifndef EOF
#define EOF (-1)
#endif
#define private static
typedef int bool;
#define NO 0
#define YES 1
#define FALSE 0
#define TRUE 1
#define OFF 0
#define ON 1
/* typedef structure definitions */
#ifdef IPROCS
typedef struct process Process;
#endif
typedef struct window Window;
typedef struct position Bufpos;
typedef struct mark Mark;
typedef struct buffer Buffer;
typedef struct line Line;
typedef struct iobuf IOBUF;
#include "buf.h"
#include "wind.h"
#include "io.h"
#include "dataobj.h"
#include "keymaps.h"
#include "argcount.h"
#include "util.h"
#include "vars.h"
#include "screen.h"
/* return codes for command completion (all < 0 because >= 0 are
legitimate offsets into array of strings */
#define AMBIGUOUS (-2) /* matches more than one at this point */
#define UNIQUE (-3) /* matches only one string */
#define ORIGINAL (-4) /* matches no strings at all! */
#define NULLSTRING (-5) /* just hit return without typing anything */
/* values for the `flags' argument to complete */
#define NOTHING 0 /* opposite of RET_STATE */
#define RET_STATE 1 /* return state when we hit return */
#define RCOMMAND 2 /* we are reading a joverc file */
#define CASEIND 4 /* map all to lower case */
#define FORWARD 1
#define BACKWARD (-1)
#define ARG_CMD 1
#define LINECMD 2
#define KILLCMD 3 /* so we can merge kills */
#define YANKCMD 4 /* so we can do ESC Y (yank-pop) */
extern jmp_buf mainjmp;
/* setjmp/longjmp args for DoKeys() mainjmp */
#define FIRSTCALL 0
#define ERROR 1
#define COMPLAIN 2 /* do the error without a getDOT */
#define QUIT 3 /* leave this level of recursion */
#define INT_OKAY 0
#define INT_BAD (-1)
extern char NullStr[];
extern char *ProcFmt;
extern int
LastKeyStruck,
RecDepth, /* recursion depth */
InJoverc; /* depth in sourcing */
extern bool
InMacDefine, /* are we defining a macro right now? */
TOabort, /* flag set by Typeout() */
errormsg, /* last message was an error message
so don't erase the error before it
has been read */
InputPending, /* nonzero if there is input waiting to
be processed */
Interactive,
inIOread, /* so we know whether we can do a redisplay. */
Asking, /* are we on read a string from the terminal? */
InRealAsk; /* are we currently executing real_ask()? */
extern int
AskingWidth; /* width of question being asked */
extern char
*Inputp,
Minibuf[LBSIZE],
ShcomBuf[LBSIZE],
*version;
#define MESG_SIZE 128
extern char mesgbuf[MESG_SIZE];
#include "externs.h"
#ifndef W_OK
# define W_OK 2
# define X_OK 1
# define F_OK 0
#endif